package com.dc.commons.json;

import com.dc.commons.status.HttpStatus;
/**
 * *****************************************************************************
 * 文件名: DcJson.java <br>
 * 版本: 1.0<br>
 * 描述: Json 请求 包装类 将实际的对象放在 result中，<br>
 * 版权所有: <br>
 * <P>
 * 创建者: 王建栋 <br>
 * 创建日期: 2015年12月16日 上午10:12:06<br>
 * 修改者: <br>
 * 修改日期: <br>
 * 修改说明: <br>
 *****************************************************************************
 */
public class JsonWrapper {

	/**
	 * 请求状态 
	 */
	private HttpStatus status;
	
	/**
	 *  辅助信息
	 */
	private String msg;
	
	/**
	 * 实际结果
	 */
	private Object result;
	
	/**
	 * 异常信息
	 */
	private Throwable exception;
	
	
	public JsonWrapper(){
		
	}
	
	public JsonWrapper(HttpStatus status,String msg){
		this.status=status;
		this.msg=msg;
	}
	
	/**
	 * 操作成功
	 * @return JsonWrapper
	 */
	public static JsonWrapper success(){
		return new JsonWrapper(HttpStatus.SUCCESS,"操作成功！");
	}
	
	/**
	 * 操作失败
	 * @param msg 失败信息
	 * @return JsonWrapper
	 */
	public static JsonWrapper error(String msg){
		return new JsonWrapper(HttpStatus.ERROR,msg);
	}
	
	/**
	 * 操作失败，包含异常信息
	 * @param msg 失败信息
	 * @param excption 异常信息
	 * @return JsonWrapper
	 */
	public static JsonWrapper error(String msg,Throwable excption){
		JsonWrapper json= new JsonWrapper(HttpStatus.ERROR,msg);
		return json.exception(excption);
	}
	
	/**
	 * 没有权限
	 * @param msg
	 * @return JsonWrapper
	 */
	public static JsonWrapper unAuthorized(String msg){
		return new JsonWrapper(HttpStatus.UN_AUTHORIZED,msg);
	}
	
	/**
	 * 没有登录
	 * @return JsonWrapper
	 */
	public static JsonWrapper noLogin(){
		return new JsonWrapper(HttpStatus.NO_LOGIN,"没有登录");
	}
	
	/**
	 * 设置异常信息
	 * @param exception
	 * @return JsonWrapper
	 */
	public JsonWrapper exception(Throwable exception){
		this.exception=exception;
		return this;
	}
	
	/**
	 * 获取请求状态
	 * @return HttpStatus
	 */
	public HttpStatus getStatus() {
		return status;
	}
	
	/**
	 * 设置请求状态
	 * @param status
	 * @return JsonWrapper
	 */
	public JsonWrapper setStatus(HttpStatus status) {
		this.status = status;
		return this;
	}
	
	/**
	 * 获得辅助信息
	 * @return msg
	 */
	public String getMsg() {
		return msg;
	}
	
	/**
	 * 设置辅助信息
	 * @param msg
	 */
	public void setMsg(String msg) {
		this.msg = msg;
	}
	
	/**
	 * 获取 传输结果
	 * @return result
	 */
	public Object getResult() {
		return result;
	}
	
	/**
	 * 设置传输结果
	 * @param result
	 * @return JsonWrapper
	 */
	public JsonWrapper setResult(Object result) {
		this.result = result;
		return this;
	}
	
	/**
	 * 获取异常信息
	 * @return exception
	 */
	public Throwable getException() {
		return exception;
	}
	
	
}
